package es.uned.ii.si3.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.struts.util.LabelValueBean;
import es.uned.ii.si3.model.EstadosProyecto;


public class EstadosProyectoDAOImpl implements EstadosProyectoDAO {

	private static Logger log = Logger.getLogger(EstadosProyectoDAOImpl.class);

	public EstadosProyectoDAOImpl() {
		
	}
	
	public EstadosProyecto getEstadosProyectoById(int idEstado) {
	
		PreparedStatement ptmt = null;
		ResultSet resultado = null;
		EstadosProyecto estado = null;
		log.debug("EstadosProyectoDAOImpl::getEstadoProyectoById: Vamos a obtener un estado por su identificador");
		Connection conn = ConnectionFactory.getConnection();
		
		try{
			ptmt = conn.prepareStatement("select * from estados_proyecto where idEstado=?;");
			ptmt.setInt(1, idEstado);
			
			resultado = ptmt.executeQuery();
			
			if (resultado.next()){
				estado = new EstadosProyecto();
				estado.setIdEstado(resultado.getInt("idEstado"));
				estado.setDescripcion(resultado.getString("descripcion"));
			}			
		}catch(SQLException e){
			log.error(e);
			estado = null;
		} finally {
			try {
				resultado.close();
				resultado = null;
			} catch (Exception e) { }
			
			try {
				ptmt.close();
				ptmt = null; 
			} catch (Exception e) { }
		}
		ConnectionFactory.release(conn);
		return estado;
	}



	public List getAll() {
		
		PreparedStatement ptmt = null;
		ResultSet resultado = null;
		ArrayList<LabelValueBean> listaEstados=new ArrayList<LabelValueBean>();
		log.debug("EstadosProyectoDAOImpl::getAll: Vamos a obtener la lista de estados");
		Connection conn = ConnectionFactory.getConnection();
		
		try{
			
			ptmt = conn.prepareStatement("select * from estados_proyecto;");
			resultado = ptmt.executeQuery();
			
			while (resultado.next()){
				listaEstados.add(new LabelValueBean (resultado.getString("idEstado") , resultado.getString("descripcion")));
			}			
		}catch(SQLException e){
			log.error(e);
			listaEstados = null;
		} finally {
			try {
				resultado.close();
				resultado = null;
			} catch (Exception e) { }
			
			try {
				ptmt.close();
				ptmt = null; 
			} catch (Exception e) { }
		}
		ConnectionFactory.release(conn);
		return listaEstados;
	}



	
}
